clear all;clc;
X=[1,0;0,1;0,0;1,1];
t=[0;0;1;1];
f=@(x)max(x,0);
f_d=@(x)(x>0)*1;

w{1}=rand(2);b{1}=rand(2,1);
w{2}=rand(1,2);b{2}=rand(1);

yyy=[];
%学习率一开始设置为0.001很不稳定，但是设置为0.01就很稳定了！
for iter=1:20000
    n=4;lr=0.01;
    yy=[];
    %     for i=randperm(4)
    for i=randperm(4)
        %forward
        x0=X(i,:)';
        u{1}=w{1}*x0+b{1};
        x{1}=f(u{1});
        u{2}=w{2}*x{1}+b{2};
        y=f(u{2});
        yy(i)=y;
        %backpropagation
        d{2}=(y-t(i)).*f_d(u{2});
        d{1}=w{2}'*d{2}.*f_d(u{1});
        %update
        b{2}=b{2}-lr*d{2};
        b{1}=b{1}-lr*d{1};
        w{2}=w{2}-lr*d{2}*x{1}';
        w{1}=w{1}-lr*d{1}*x0';
    end
    if isempty(yyy)
        yyy=[yyy; yy 0];
    else
        yyy=[yyy; yy norm(yyy(end,1:4)-yy)];
    end
end
plot(yyy(:,5))
yyy